package edu.zhuravlev.trainingbot.service;


import edu.zhuravlev.trainingbot.entity.User;
import edu.zhuravlev.trainingbot.exception.SystemException;
import edu.zhuravlev.trainingbot.extractor.UserExtractor;
import edu.zhuravlev.trainingbot.repository.UserRepository;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.telegram.telegrambots.meta.api.objects.Update;

@Service
@RequiredArgsConstructor
public class UserService {

    private final UserRepository userRepository;

    private final UserExtractor userExtractor;

    public User extractUser(@NotNull Update update) {
        if (!update.hasMessage()) {
            throw new SystemException("Невозможно извлечь информацию о пользователе. В Update отсутствует сообщение. %s".formatted(update));
        }

        return userExtractor.extractUser(update);
    }

    public void saveIfNotExists(@NotNull User user) {
        userRepository.save(user);
    }

}
